#ifndef ION_THRUSTER_H
#define ION_THRUSTER_H

#include "common.h"
#include "vector3d.h"

// 离子发动机状态
typedef enum {
    THRUSTER_OFF,
    THRUSTER_WARMUP,
    THRUSTER_READY,
    THRUSTER_THROTTLE,
    THRUSTER_SHUTDOWN,
    THRUSTER_ERROR
} ThrusterState;

// 离子发动机参数
typedef struct {
    double max_thrust;          // 最大推力 (N)
    double min_thrust;          // 最小推力 (N)
    double specific_impulse;    // 比冲 (s)
    double power_consumption;   // 功率消耗 (W)
    double warmup_time;         // 预热时间 (s)
    double response_time;       // 响应时间 (s)
    double efficiency;          // 效率 (0-1)
} ThrusterSpec;

// 离子发动机控制
typedef struct {
    ThrusterSpec spec;
    ThrusterState state;
    double current_thrust;      // 当前推力 (N)
    double commanded_thrust;    // 指令推力 (N)
    double fuel_remaining;      // 剩余燃料 (kg)
    double total_impulse;       // 总冲量 (N·s)
    double operating_time;      // 运行时间 (s)
    double temperature;         // 温度 (°C)
    double power_level;         // 功率水平 (0-1)
    bool is_available;          // 是否可用
} IonThruster;

// 函数声明
ErrorCode ion_thruster_init(IonThruster* thruster, const ThrusterSpec* spec);
ErrorCode ion_thruster_command(IonThruster* thruster, double thrust_command);
ErrorCode ion_thruster_update(IonThruster* thruster, double dt);
ErrorCode ion_thruster_shutdown(IonThruster* thruster);
ErrorCode ion_thruster_calculate_impulse(IonThruster* thruster, double duration, double* impulse);

// 燃料计算
double ion_thruster_fuel_consumption(IonThruster* thruster, double thrust, double duration);
double ion_thruster_delta_v(IonThruster* thruster, double fuel_mass);

// 状态检查
bool ion_thruster_is_ready(const IonThruster* thruster);
double ion_thruster_efficiency_at_thrust(const IonThruster* thruster, double thrust);

// 打印状态
void ion_thruster_print_status(const IonThruster* thruster);

#endif // ION_THRUSTER_H
